import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Hua YY
 * Date: 2023 —10 —21
 * Time: 9:37
 */

public class test_10_21 {

    /*
    public static void move(char pos1 , char pos2){
        System.out.print(pos1 + "——>>" + pos2 + " ");
    }

    *//**
     *
     * @param n    盘子的数量
     * @param pos1  起始位置
     * @param pos2  中转位置
     * @param pos3  目的地位置
     *//*
    public static void haniota(int n, char pos1, char pos2 , char pos3){
        if(n == 1){
            move(pos1,pos3);
            return;
        }
        haniota(n-1 , pos1 , pos3 , pos2);
        move(pos1,pos3);
        haniota(n-1 , pos2 , pos1 , pos3);

    }
    public static void main(String[] args) {
        haniota(4 , 'A' , 'B' , 'C' );
        System.out.println();
    }
    *//**
     * haniota心得，将n-1个汉诺塔看成整体去解决移动
     * 实际是来回1,2柱子交替是相对的
     *//*


    */



    /*
    public static void fun1 (int [] array1){
        for (int i = 0; i < array1.length; i++) {
            array1 [i] = 2 * array1 [i];
        }
    }
    public static int[] fun2(int [] array2){
        int [] ret = new int[array2.length];
        for (int i = 0; i < array2.length; i++) {
            ret [i] = 2 * array2 [i];
        }
        return ret;
    }
    public static void main(String[] args) {
        int [] array = new int[]{1,3,4};
        int [] ret = fun2(array);
        System.out.println(Arrays.toString(ret));//数组中的元素转化为字符串在打印出来

    }
    public static void main1(String[] args) {
        int [] array = new int[]{1,3,4};
        fun1(array);
        System.out.println(Arrays.toString(array));//数组中的元素转化为字符串在打印出来

    }
       */



        /*

    public static void func1(int [] array1){
        int i = 0;
        int j = array1.length-1;
        //下面的代码是从前往后数找偶数排除奇数
        while(i < j && array1[i] % 2 != 0){
            i++;
        }
        //下面的代码是从后往前数找奇数排除偶数
        while(i < j && array1[j] % 2 == 0){
            j--;
        }
        //交换位置
        int tem = array1 [i];
        array1 [i] = array1 [j];
        array1 [j] = tem;

        return;
    }
    public static void main(String[] args) {
        int[] array = new int[]{1,2,4,5,6,7,2,3};
        func1(array);
        System.out.println(Arrays.toString(array));
    }

    */

    /*
    public static void main(String[] args) {
        int [] array = new int[]{1,2,4,5,7,8,9};
        System.out.println(binarysearch(array , 2));
        System.out.println(binarysearch(array , 3));
        System.out.println(binarysearch(array , 4));
        System.out.println(binarysearch(array , 6));

    }

    public static int binarysearch(int [] array , int n){
        int i = 0;
        int j =array.length - 1;
        while (i  <= j){       //  重点这里一定是等于号，因为测试n=4的时候会出现
                               //  i=j的情况,还是通过打断点找出来问题所在
            int mid = (i + j) / 2;
            if (array[mid] < n) {
                i = mid + 1;
            }
            else if (array[mid] == n){
                return mid;
            }
            else{
                j = mid - 1 ;
            }
        }
        return -1;//没有找到
    }

    */





    /*


    */

    /**
     * 要在一个数组中找到两个元素等于target目标值
     * @param args
     *//*
    public static void main(String[] args) {

        int [] array = {1,2,3,6,7,8};
        int [] ret = func(array,9); //用一个新的数组ret来接收一下返回值new int[]{i, j}
        System.out.println(Arrays.toString(ret));//在把ret数组以字符串的形式打印出来

    }


    public static int[] func(int [] array , int target){
        int [] array2 = {-1,-1};

        for (int i = 0; i < array.length; i++) {
            for (int j = i + 1; j < array.length; j++) {
                if (array[i] + array[j] == target) {
                   // return new int[]{i,j};  //另一种写法
                    array2[0] = i;//相当于是用array2数组中第1,2个元素
                    array2[1] = j;//来接收符合情况的array中的元素下标
                }
            }
        }
        return array2;
    }
    */


    /*
    //这道题是写在一个数组中找到仅出现一次的那个元素
    public static void main(String[] args) {
        int array1[] =new int[]{1,2,3,3,10,5,2,1,5};//不能出现奇数个相同的数字，两两相消
        int n = func1(array1);       //
        System.out.println(n);
    }
    public static int func1(int [] array){
        int ret = 0;
        for (int i = 0; i < array.length; i++) {
            ret ^= array[i];//异或有3条规律，x异或0=x，x异或x=0，异或不考虑顺序
                             // k进制异或就是k进制的不带进位的加法，随意！！！
        }
        return ret;
    }
*/

   /* public static void  transform (int [] array1){
        int array2[] = new int[10];
        array2 = array1; //把array的地址赋值给array2，array2所指对象为array所指的数组

        for (int i = 0; i < array1.length; i++) {
            array2[i] = 2 * array1[i];
        }
        System.out.println(Arrays.toString(array2));
        return ;
    }

    public static void main(String[] args) {
        int [] array = new int[]{1,3,4,5,6,7};
        transform(array);
    }

*/

}
